package br.com.duosoftware.orcamento.services;

import br.com.duosoftware.orcamento.daos.OrcamentoDAO;
import br.com.duosoftware.orcamento.entidades.Orcamento;

/**
 *
 * @author Renato.Machado
 *
 */
public class OrcamentoService {

    public boolean verificarTotalValorDespesa(Orcamento orcamento) {

        OrcamentoDAO orcamentoDAO = new OrcamentoDAO();

        double totalOrcamentos = orcamentoDAO.obterSomaDoValorDasDespesas(orcamento.getDotacao());

        boolean retorno;
        
        if (orcamento.getId() != null) {
            /* 
             * CASO TENHAMOS UM ORCAMENTO ESTAMOS EDITANDO ALGUM ITEM. PARA TANTO, 
             * DEVEMOS FAZER OS DEVIDOS CALCULOS PARA ENTÃO FAZER A VERIFICAÇÃO DOS
             * VALORES - PEGO O TOTAL DA SOMA DAS DESPESAS, DIMINUO DO VALOR QUE JÁ
             * TINHA ESTAVA NO ORCAMENTO E SOMO O NOVO VALOR (QUE ESTÁ SENDO DIGITADO)
             */
            retorno = ( totalOrcamentos - orcamentoDAO.getOrcamentoPorId(orcamento.getId()).getValorDespesa() + orcamento.getValorDespesa() ) <= orcamento.getDotacao().getValorPrevisto();
            
        } else {
            /* NESTE CASO O USUÁRIO ESTÁ ADICIONANDO UM NOVO ORÇAMENTO
             * ENTÃO, APENAS SOMO OS VALORES JÁ ADICIONADOS COM O VALOR 
             * QUE ESTÁ SENDO DIGITADO 
             */
            retorno = (totalOrcamentos + orcamento.getValorDespesa()) <= orcamento.getDotacao().getValorPrevisto();
            
        }
        return retorno;
    }

}
